#!/usr/bin/python
# -*- coding: UTF-8 -*-

from kpautos.engine.case import Case
from kptest.config.enum import DeviceType, HostType, DeviceUtility
import re


class BMC_IPMI_008(Case):
    """
        Name:
            BMC_IPMI_008
        Label:
            查询风扇信息
        PreCondition:
            1、BMC正常运行
        TestStep:
            1.执行“ipmitool raw 0x30 0x92 0xdb 0x07 0x00 0x14”
            2. 查看ipmitool返回值，有结果A）
        ExpectedResult:
            A）风扇信息读取正确
        Parameters:

        Remark:

    """

    # 测试执行前配置等准备操作
    def pre_test_case(self):
        self.device_dut = self.resource.get_device(device_type=DeviceType.Server, utility=DeviceUtility.DUT)
        self.os_host = self.device_dut.get_host(host_type=HostType.HostOS)

    # 测试步骤
    def procedure(self):
        self.log_step("1、带外执行ipmitool命令，查看风扇调试模式")
        fan_raw_output = self.os_host.send_combination_keys(\
            'ipmitool raw 0x30 0x92 0xdb 0x07 0x00 0x14', timeout=3)
        if re.search("db 07 00 01 10", fan_raw_output):
            self.log_info("风扇的调速模式为：节能模式")
        elif re.search("db 07 00 01 11", fan_raw_output):
            self.log_info("风扇的调速模式为：低噪声模式")
        elif re.search("db 07 00 01 12", fan_raw_output):
            self.log_info("风扇的调速模式为：高性能模式")
        elif re.search("db 07 00 01 13", fan_raw_output):
            self.log_info("风扇的调速模式为：自定义模式")
        elif re.search("db 07 00 01 14", fan_raw_output):
            self.log_info("风扇的调速模式为：液冷模式")
        else:
            raise Exception("风扇调速模式读取有误")

    # 测试结束后恢复环境
    def post_test_case(self):
        pass